package cn.whuc.homework

object Case04 {
  def main(args: Array[String]): Unit = {
    val datas = List(
      ("zhangsan", "湖北", "鞋"),
      ("lisi", "湖北", "衣服"),
      ("wangwu", "湖北", "鞋"),
      ("zhangsan", "湖南", "鞋"),
      ("lisi", "湖南", "衣服"),
      ("wangwu", "湖南", "鞋"),
      ("zhangsan", "湖南", "鞋"),
      ("lisi", "湖北", "衣服"),
      ("wangwu", "湖北", "鞋"),
      ("zhangsan", "湖北", "鞋"),
      ("lisi", "湖北", "衣服"),
      ("wangwu", "湖北", "帽子"),
      ("zhangsan", "湖南", "鞋"),
      ("lisi", "湖南", "衣服"),
      ("wangwu", "湖南", "帽子"),
      ("zhangsan", "湖南", "鞋"),
      ("lisi", "湖北", "衣服"),
      ("wangwu", "湖北", "帽子"),
      ("lisi", "湖北", "衣服"),
      ("wangwu", "湖北", "电脑"),
      ("zhangsan", "湖南", "鞋"),
      ("lisi", "湖南", "衣服"),
      ("wangwu", "湖南", "电脑"),
      ("zhangsan", "湖南", "电脑"),
      ("lisi", "湖北", "衣服"),
      ("wangwu", "湖北", "帽子")
    )

    /*
      不同省份商品点击排行，逆序
      ("wangwu", "湖北", "帽子")
      省份 商品 1
      省份 商品 n
      省份 商品-n 分组

     */
    val list: List[((String, String), List[((String, String), Int)])] = datas.map(tuple => {
      ((tuple._2, tuple._3), 1)
    }).groupBy(t => t._1).toList
    println(list)

    val tuples: List[((String, String), Int)] = list.map(t => {
      (t._1, t._2.length)
    })

    println(tuples)

    val tuples1: List[(String, (String, Int))] = tuples.map(t => {
      (t._1._1, (t._1._2, t._2))
    })

    println(tuples1)

    val tuples2: Map[String, List[(String, (String, Int))]] = tuples1.groupBy(t => {
      t._1
    })

    println(tuples2)

    val tuples3: Map[String, List[(String, Int)]] = tuples2.map(t => {
      (t._1, t._2.map(t => {
        (t._2)
      }))
    })

    println(tuples3)

    val tuples4: Map[String, List[(String, Int)]] = tuples3.map(t => {
      (t._1, t._2.sortBy(t => {
        t._2
      }).reverse)
    })

    println(tuples4)





  }
}
